feat: add secure Clipboard workspace with history and snippets - #335
Conversation
…oard-history # Conflicts: # Configs/AppVersion.xcconfig # README.md # Sources/App/UnifiedSearchPaletteView.swift # Sources/MacToolsPluginKit/PluginShortcutRecorder.swift # Tests/App/MacToolsSearchTests.swift # Tests/Core/Plugins/PluginPanelControlLayoutTests.swift # scripts/tests/test_plugin_minimum_host_compatibility.py
Add snippet expansion and live variable previews; refine filtering, selection, export, sharing, window behavior, and settings. Include shared shortcut integration, regression coverage, and the local compiler compatibility fix.
Preserve the clipboard branch compiler-safe resource setup while incorporating main through e35544d. Both branches independently split event-tap resource setup from dispatch startup. Validation: make ci passes with 3526 XCTest cases, 187 script tests, changelog validation, and PluginKit v5 binary compatibility. The prior clipboard cancellation test also passes in focused and full runs.
…actions Merge item-level saved, OCR, capture and usage changes without replacing concurrent state. Preserve action targets and clipboard ownership, and guard plugin reinstallation during unfinished private-data cleanup. Reuse unchanged presentation snapshots and bounded pixel-sized previews, defer hidden menus, and reduce metadata publications. Add regression coverage and reproducible Debug/Release performance comparisons.
Review summaryThe security baseline here is solid, and I want to state what I verified so the remaining items are read in context: capture reads type names before payload bytes, so The items below are what I would like addressed. The first three are regressions against existing behavior with small diffs, not new work. 1. Regressions in existing behavior1.1
|
|
Thanks for the detailed review. I rechecked every finding against the current PR head and addressed the issues that should be fixed in this PR. Fixed
Kept intentionally
Follow-up rather than a partial fix here
Validation on the updated head includes the full local |
Summary
Adds a privacy-first, keyboard-driven Clipboard workspace for finding earlier copies, keeping reusable content, creating snippets, and pasting several items across apps.
Closes #306.
What users get
88matchesMT88 tripod), progressive filters, paged lazy results, ordered multi-selection, customizable window commands, and a searchable companion Actions panel.The Clipboard window also supports Window Layouts, native resizing and movement from its visible handle, compact progressive filters, grouped shortcut help, and an Actions panel that stays associated with the Clipboard window without obscuring its content.
Privacy and safety
Reliability and concurrency coverage
Performance evidence
Frozen before/after binaries were measured in alternating Release runs. Median synthetic model results:
A separate within-build image test measured 133 ms uncached -> 13 ms cached for ten preview visits, including the first decode. These are model and decoder measurements, not rendered-frame or end-to-end app timings; they exclude fixture creation, real Keychain/database access, and disk payload reads.
Full results and limitations · Reproducible probes
Validation
This PR remains a draft; no review is requested yet.
make cipasses on the current head: the complete XCTest suite, 213 repository script tests, changelog and localization validation, manifest-schema checks, and the PluginKit v5 compatibility client.Current-head screenshots
Captured from the installed build after the final review fixes. The Clipboard examples are filtered to one non-sensitive repository URL.
Clipboard settings
Clipboard workspace
Searchable Actions panel
Earlier state coverage: empty, small, mixed, image, and advanced settings
These August 27 captures use a reset library populated with non-sensitive sample content. They document states not recreated for the final smoke pass; surrounding labels have since been refined.
Populated History and rich-text preview
Empty History
One copied item
Mixed small library and neutral-background color preview
Image preview
Paste Queue, snippets, and sensitive-copy settings
Expanded Paste Queue options
Retention and local data controls
Configurable Clipboard-window shortcuts